我們每天使用的智慧應用幾乎都與「語言理解」有關。
像是當你對 ChatGPT 提問、請 Google 翻譯一段文字、或讓 Siri 幫你設鬧鐘時,
背後其實都有一個核心能力,就是讓電腦「理解」並「生成」語言。
而這一切的基礎,就是「大型語言模型(Large Language Model, LLM)」。
它是近幾年人工智慧發展中最重要的突破之一,
也是 ChatGPT、Gemini(原 Bard)、Claude 等智慧助理的背後引擎。
本次介紹的目的,就是要用淺顯易懂的方式,帶大家了解這些模型的
基本運作邏輯、訓練方式、語言理解機制,以及它們的限制與未來發展方向。
我們不會使用艱深的數學公式,而是透過實際例子與比喻,一步步揭開 LLM 的運作秘密。
那就讓我們開始吧!
大型語言模型是一種能「讀懂」並「生成」人類語言的人工智慧系統,
它的核心任務其實非常簡單,就是「預測下一個字會是什麼」。
但當這個任務被放大到龐大的語料與上千億個參數後,
模型就能自動學會語言規律、語意關係,甚至邏輯結構。
如果舉個例子來說,當模型看到「我今天心情很」,它會根據訓練經驗,
預測下一個字最有可能是「好」、「開心」、「差」等等,
再依照上下文選出最合理的一個。
早期的語言處理模型(如基於規則或統計的系統)需要人類手動定義語法、詞彙關係。
但 LLM 則完全不同,
因為它是透過深度學習(Deep Learning)與海量語料自我學習語言結構。
因此它能理解不同語言、方言、甚至幽默或隱喻。
(幽默我是不知道,但我用起來蠻難笑的)
而在其中,為人熟知的代表模型大約有以下幾個:
ChatGPT 背後的核心模型,擅長生成流暢文本。
結合搜尋與生成的多模態模型。
可自行微調的開源模型。
多語言理解模型,支援超過 100 種語言。
這些模型都是我們日常比較常見的,甚至可以說是我們工作的好夥伴,
而這些模型的共同點是:它們都建立在相同的神經網路架構上 - 「Transformer」。
要打造一個實用的 LLM,需要經過三個重要階段。每個階段都有不同的目標和方法。
以下就讓我們一個一個來介紹:
預訓練是 LLM 的基礎階段。
在這個階段,模型會讀取海量的文本資料,包括網頁、書籍、論文、程式碼等等。
在 GPT-3 中使用了約 45TB 的文本資料,這相當於數億本書的內容,資料量非常龐大。
在訓練過程中,模型不斷練習「預測下一個字」這個任務。
經過數億次的練習,模型就可以逐漸學會語言的規律。
它可能可以學會什麼樣的句子是通順的,甚至也可以說它學會了世界知識。
比如它知道巴黎是法國的首都,
知道水在攝氏 100 度會沸騰,
知道如果 A 大於 B 且 B 大於 C,那麼 A 就大於 C...。
但與此同時,這個階段的訓練也需要大量計算資源。
根據資料,光是訓練 GPT-3 估計花費了超過 460 萬美元,需要數千張高效能 GPU,
但跟人類學習不一樣,它的訓練時間只需數週到數月,
相對的,如果讓一個人讀一萬本書,我們的速度就可能只是它的1/10000000......。
預訓練後的模型雖然懂很多知識,但它還不太會「對話」。
它可能會給出不太有用的回答,或是回答得太冗長,這個時候就需要微調。
微調有兩種主要方法:
第一種是「指令微調」。
訓練團隊會準備數萬個「指令-回答」的配對,
比如說「用一句話解釋量子力學」配對一個精簡的回答,
「將這句話翻譯成英文」配對正確的翻譯結果等等。
以此模型就可以透過學習這些範例,逐漸學會如何回應各種使用者需求。
第二種方法則更進階,叫做「人類回饋強化學習」(RLHF)。
這個方法讓模型的回答更符合人類期待。
流程是這樣的:
先讓模型對同一個問題生成多個回答,然後請人類評分員對這些回答排序,判斷哪個最好、哪個最差。
接著訓練一個「獎勵模型」來預測人類的偏好,
最後用強化學習技術讓模型往高分的方向優化加強。
像我們最常使用的 ChatGPT ,它的成功很大程度歸功於 RLHF。
這個技術讓 AI 的回答變得更有幫助、更友善、更符合人類的價值觀。
它也能減少模型產生有害或不當內容的機率。
推理階段就是我們實際使用 LLM 的時候。
當你輸入一個問題,比如「請推薦台北好吃的拉麵店」,
系統會先將你的文字切成 Token(稍後會詳細解釋),
然後這些 Token 會送進模型,經過數十層的神經網路處理。,
模型會預測下一個最可能的 Token,然後繼續預測下一個,直到生成完整的回答。
整個過程看起來很快,但其實模型正在進行數億次的數學運算。
這就是為什麼使用大型 LLM 需要強大的伺服器,也是為什麼部分 API 服務需要收費。
LLM 不是直接處理文字,而是將文字切成更小的單位,叫做 「Token」(詞元),
這是理解 LLM 的重要概念,因此我們現在就來看看它,到底是什麼?
中文的 Token 化相對簡單,例如「我喜歡吃蘋果」通常會被切成
「我」、「喜歡」、「吃」、「蘋果」四個 Token,
大致上一個中文字等於一個 Token。
而英文的 Token 化就比較複雜了。
"I love apples" 會被切成
"I"、" love"、" apples" 三個 Token。
注意空格會包含在 Token 裡。英文平均一個字大約等於 0.75 個 Token。
而除了我們人使用的文字之外,程式碼也會被** Token 化**。
例如像"ChatGPT" 可能會被切成 "Chat"、"G"、"PT" 三個 Token,
因為這個詞不在模型的詞彙表裡。
而「為什麼需要 Token?」,因為模型只能處理數字,不能直接處理文字,
而若是每個 Token 都對應一個數字 ID ,是平衡效率與表達能力的最佳方案。
如果以單個字母為單位,序列會太長;如果以整個句子為單位,詞彙表會太大,
而Token 就提供了最佳的折衷方案。
幾乎所有現代 LLM 都基於 「Transformer 架構」。
這個架構在 2017 年由 Google 的研究團隊提出,徹底改變了自然語言處理領域。
Transformer 最重要的創新是自注意力機制(Self-Attention),
這個機制讓模型能理解句子中字詞之間的關係。
舉個例子。當你看到「銀行不能貸款給那位欠債的老闆」這句話時,
你知道「銀行」指的是金融機構,不是河岸。你也知道「貸款」的主詞是「銀行」,
「欠債的」是在修飾「老闆」,
人類能自然理解這些關係,但電腦其實是需要特殊的機制。
自注意力機制讓模型計算每個字對其他字的「注意力權重」,
當模型處理「銀行」這個字時,它會同時考慮句子中所有其他字,然後發現「貸款」這個字特別重要,
給予高注意力權重,這樣模型就能理解「銀行」和「貸款」之間的關係。
模型預測下一個字時,並不一定是選機率最高的字,而我們可以透過調整參數來控制生成的風格。
Temperature(溫度)是最重要的參數之一,
當溫度越低,模型越傾向選擇高機率的字,回答會更保守、更一致;
而當溫度越高,模型會更隨機選擇,回答會更有創意,但也可能更不連貫。
當你需要生成程式碼或回答事實性問題時,應該使用低溫度(0.1-0.3),
這樣模型會給出最確定的答案;
而當你需要創意寫作或腦力激盪時,可以使用高溫度(0.8-1.0),
讓模型給出更多樣化的回答。
另一個常用參數是 Top-p,也叫 Nucleus Sampling。
這個參數設定一個「累積機率閾值」,只從累積機率達到這個閾值的候選字中選擇。
比如 Top-p 設為 0.9,模型會先將所有候選字按機率排序,然後只從累積機率達到 90% 的字中選擇。
這樣既保持了多樣性,又避免選到太離譜的字。
這兩個參數通常搭配使用。一般的對話應用可能使用 Temperature=0.7 和 Top-p=0.9,
在可控性和創意性之間取得平衡。
以上就是我們今天的學習了,
明天就是此版最後一篇文章,
我們就來看看在這30天我們到底學習了什麼?
有沒有真的更了解 AI,更能與它和平共處了。